package com.example.chamberlainserver.Service;

import com.example.chamberlainserver.Entry.DormTrippingRecord;
import com.example.chamberlainserver.Vo.Request.DormTripping.DormTrippingRecordQuery;
import com.example.chamberlainserver.dto.PageResult;

import java.util.List;

/**
 * 宿舍跳闸记录服务接口
 */
public interface DormTrippingRecordService {
    
    /**
     * 添加跳闸记录
     * @param record 跳闸记录信息
     * @return 添加后的跳闸记录信息
     */
    DormTrippingRecord addRecord(DormTrippingRecord record);
    
    /**
     * 更新跳闸记录信息
     * @param record 跳闸记录信息
     * @return 更新后的跳闸记录信息
     */
    DormTrippingRecord updateRecord(DormTrippingRecord record);
    
    /**
     * 删除跳闸记录
     * @param id 记录ID
     * @return 是否删除成功
     */
    boolean deleteRecord(Integer id);
    
    /**
     * 根据ID获取跳闸记录
     * @param id 记录ID
     * @return 跳闸记录信息
     */
    DormTrippingRecord getRecordById(Integer id);
    
    /**
     * 获取所有跳闸记录
     * @return 跳闸记录列表
     */
    List<DormTrippingRecord> getAllRecords();
    
    /**
     * 根据宿舍号获取跳闸记录
     * @param dormitoryNum 宿舍号
     * @return 跳闸记录列表
     */
    List<DormTrippingRecord> getRecordsByDormitoryNum(String dormitoryNum);
    
    /**
     * 根据班级名称获取跳闸记录
     * @param className 班级名称
     * @return 跳闸记录列表
     */
    List<DormTrippingRecord> getRecordsByClassName(String className);
    
    /**
     * 根据辅导员姓名获取跳闸记录
     * @param counselor 辅导员姓名
     * @return 跳闸记录列表
     */
    List<DormTrippingRecord> getRecordsByCounselor(String counselor);
    
    /**
     * 根据处理状态获取跳闸记录
     * @param isHandled 处理状态
     * @return 跳闸记录列表
     */
    List<DormTrippingRecord> getRecordsByHandleStatus(Boolean isHandled);
    
    /**
     * 分页查询跳闸记录
     * @param recordQuery 查询条件
     * @return 分页结果
     */
    PageResult<DormTrippingRecord> getPagedRecordList(DormTrippingRecordQuery recordQuery);
}